\newtcolorbox{titled_block}[1]{%
colback=green!5!white,colframe=green!30!purple!60, fonttitle=\bfseries,title={#1}
}


\newtcolorbox[auto counter]{numbered_demo}[2][blue!10]{%
    colback=#1,
    coltitle=black,
    colframe=red!10,
    title={\fbox{\thetcbcounter} #2},
    fonttitle=\bfseries,
    sharp corners,
    width=\linewidth,
    boxsep=5pt,
    left=5pt,
    right=5pt,
    before skip = 0.5cm,
    after skip = 0.5cm
}

%定义两部分内容的列表-begin
\newlist{dualitem}{enumerate}{1}
\setlist[dualitem]{label=\arabic*.,itemsep=0.5em}
\newcommand{\dualentry}[2]{%
    \item \parbox[t]{0.25\textwidth}{#1}%
          \parbox[t]{0.65\textwidth}{#2}
}
%定义两部分内容的列表-over

%定义提醒命令-begin
\newcommand{\notice}[3]{%
    % #1: 提醒类型（如：重要、注意、警告等）    
    \begingroup % 开始一个新的分组
    \color{#2} % 设置文本颜色为蓝色 
    \par\noindent\textbf{#1:} % 显示提醒类型
     #3 % 显示提醒内容
    \endgroup % 结束分组
    \par % 换行
}
%定义提醒命令-end

%定义双语亮亮命令-begin
\NewDocumentCommand{\bilingualbox}{m m}{               
    \begin{tcolorbox}[ 
        enhanced, 
        colback=cyan!10, 
        colframe=blue!40!black, 
        fontupper=\songti, 
        fontlower=\rmfamily, 
        boxrule=1pt, 
        arc=3mm, 
        width=0.8\textwidth,
    ]
    #1 \tcblower #2
    \end{tcolorbox}
}
%定义双语亮亮命令-end

% 定义命令 \wordtag，第一个参数为单词，第二个参数为标注-begin
% 定义可复用的标注命令（自动对齐正下方）
\newcommand{\wordtag}[2]{%
    \stackunder[0.8ex]{ % 垂直间距（1.2ex 可微调）
        \uline{#1}  % 内容（带下划线）
    }{ % 下方标注内容
         #2 % 标注字体缩小
    }%
}
% 定义命令 \wordtag，第一个参数为单词，第二个参数为标注-end

% 自定义填空命令,参数表示长度xcm-begin
\newcommand{\blank}[1][0.5cm]{\uline{\makebox[#1]{}}}
% 自定义填空命令-end

% 定义彩色填空线-begin
\newcommand{\coloredblank}[2][red]{\textcolor{#1}{\uline{\makebox[1cm]{#2}}}}
% 定义彩色填空线-end

% 自定义命令 \pasttimeline，接受三个参数：开始时间、中间标注内容、结束时间-begin
\newcommand{\pasttimeline}[3]{
    \begin{tikzpicture}[scale=1.2] % 调整整体比例使排版更协调
        \draw[->, thick] (-3, 0) -- (3, 0); % 加粗时间线箭头
        % 左括号部分
        \draw (-2, 0) node[font=\large] {$(\,$}; % 放大括号尺寸
        % 中间内容与开始时间
        \draw (-1, 0) node[above=5pt] {#2}; % 中间内容（如 established），上方留5pt间距
        \draw (-1, 0) node[below=5pt] {#1}; % 开始时间（如 in 1979），下方留5pt间距
        % 右括号部分
        \draw (0, 0) node[font=\large] {$\,)$}; % 放大括号尺寸
        % 结束时间与 X 符号
        \draw (2, 0) node[below=5pt] {#3}; % 结束时间（如 now），下方留5pt间距
        % 绘制 X 符号（用两条交叉直线实现）
        \draw[red, thick] (2, 0.15) -- (1.85, -0.15); % 左上到右下
        \draw[red, thick] (1.85, 0.15) -- (2, -0.15); % 右上到左下
    \end{tikzpicture}
}
% 自定义命令 \pasttimeline-end

% 自定义命令 \timeline，接受两个参数：中间内容、时间标注-start
% 定义带可选参数的命令：
% 默认左括号位置：-1（可选参数 #1）
% 默认右括号位置：1（可选参数 #2）
% 必选参数：#3（中间内容）、#4（时间标注）
\NewDocumentCommand{\timeline}{O{-1} O{1} m m}{
    \begin{tikzpicture}[scale=1.2]
        % 动态计算时间线范围（左括号左侧+2单位，右括号右侧+2单位）
        \draw[->, thick] (-3, 0) -- (3, 0);
        % 左括号（位置由可选参数 #1 控制，默认-1）
        \draw[font=\large] (#1, 0) node[font=\large] {$(\,$}; 
        % 右括号（位置由可选参数 #2 控制，默认1）
        \draw[font=\large] (#2, 0) node[font=\large] {$\,)$}; 
        % 中间内容（居中于左右括号之间）
        \coordinate (mid) at ({(#1 + #2)/2}, 0); % 计算左右括号中点
        \draw (mid) node[above=5pt] {#3}; % 中间内容在中点上方
        % 时间标注（在中点下方）
        \draw (mid) node[below=5pt] {#4}; % 时间标注
        % X 符号（围绕中点绘制）
        \draw[red, thick] 
            (mid) ++(-0.1, 0.1) -- ++(0.2, -0.2) % 左上到右下斜线
            (mid) ++(-0.1, -0.1) -- ++(0.2, 0.2); % 右上到左下斜线
    \end{tikzpicture}
}
% 自定义命令 \timeline-end

% 自定义命令 \futuretimeline，接受三个参数：-start
% #1：now 的标注（如 "now"）
% #2：括号上方的文字（如 "will be"）
% #3：括号下方的文字（支持换行，如 "then\\at six tomorrow"）
\newcommand{\futuretimeline}[3]{
    \begin{tikzpicture}[scale=1.2]
        % 计算括号下方文字的宽度（最长行的宽度）
        \def\contentWidth{\widthof{#3}}
        
        % 绘制时间线（根据内容动态调整范围）
        \draw[->, thick] (-3, 0) -- (3, 0); % 基础时间线
        
        % 绘制 now 的标注和 X 符号
        \draw (-2, 0) node[below] {#1}; % now 标注（下方留5pt间距）
        \draw[red, thick] 
            (-2, 0) ++(-0.1, 0.1) -- ++(0.2, -0.2) % 左上到右下斜线
            (-2, 0) ++(-0.1, -0.1) -- ++(0.2, 0.2); % 右上到左下斜线
        
        % 绘制括号和上方文字
        \draw (-1, 0) node[font=\large] {$(\,$}; % 左括号
        \draw (1, 0) node[font=\large] {$\,)$}; % 右括号
        \draw (0, 0) node[above] {#2}; % 括号上方文字（居中）
        
        % 绘制括号下方文字（自适应宽度的 parbox）
        \node at (0, -0.5) {
            \parbox{\contentWidth}{\centering #3} % 宽度为文字内容的实际宽度
        };
    \end{tikzpicture}
}
% 自定义命令 \futuretimeline-end